package com.flxz.user.service;

import java.util.List;
import com.flxz.user.domain.vo.TipsListVO;
import com.flxz.user.domain.vo.TipsDetailVO;
import com.flxz.user.domain.vo.TipsPublishVO;
import com.flxz.user.domain.vo.ReplyVO;
import com.flxz.user.domain.vo.LikeVO;
import com.flxz.user.domain.vo.FavoriteVO;
import com.flxz.user.domain.vo.ReportVO;
import com.flxz.user.domain.vo.CategoryVO;

/**
 * 用户端省薪贴服务接口
 * 
 * @author flxz
 * @date 2025-09-14
 */
public interface IUserTipsService
{
    /**
     * 获取省薪贴列表
     * 
     * @param query 查询条件
     * @return 省薪贴列表
     */
    List<TipsListVO> getTipsList(TipsListVO query);

    /**
     * 获取省薪贴详情
     * 
     * @param topicId 主题ID
     * @return 省薪贴详情
     */
    TipsDetailVO getTipsDetail(Long topicId);

    /**
     * 发布省薪贴
     * 
     * @param tipsVO 省薪贴信息
     * @return 结果
     */
    int publishTips(TipsPublishVO tipsVO);

    /**
     * 获取分类列表
     * 
     * @return 分类列表
     */
    List<CategoryVO> getCategoryList();

    /**
     * 获取回复列表
     * 
     * @param query 查询条件
     * @return 回复列表
     */
    List<ReplyVO> getReplyList(ReplyVO query);

    /**
     * 发布回复
     * 
     * @param replyVO 回复信息
     * @return 结果
     */
    int publishReply(ReplyVO replyVO);

    /**
     * 点赞/取消点赞
     * 
     * @param likeVO 点赞信息
     * @return 结果
     */
    int toggleLike(LikeVO likeVO);

    /**
     * 收藏/取消收藏
     * 
     * @param favoriteVO 收藏信息
     * @return 结果
     */
    int toggleFavorite(FavoriteVO favoriteVO);

    /**
     * 举报内容
     * 
     * @param reportVO 举报信息
     * @return 结果
     */
    int reportContent(ReportVO reportVO);

    /**
     * 增加浏览次数
     * 
     * @param topicId 主题ID
     * @return 结果
     */
    int increaseViewCount(Long topicId);

    /**
     * 获取热门省薪贴
     * 
     * @return 热门省薪贴列表
     */
    List<TipsListVO> getHotTips();

    /**
     * 获取我的省薪贴
     * 
     * @param query 查询条件
     * @return 我的省薪贴列表
     */
    List<TipsListVO> getMyTips(TipsListVO query);

    /**
     * 获取我的收藏
     * 
     * @param query 查询条件
     * @return 我的收藏列表
     */
    List<TipsListVO> getMyFavorites(TipsListVO query);

    /**
     * 更新我的省薪贴
     * 
     * @param tipsVO 省薪贴信息
     * @return 结果
     */
    int updateMyTips(TipsPublishVO tipsVO);

    /**
     * 删除我的省薪贴
     * 
     * @param topicIds 主题ID数组
     * @param userId 用户ID
     * @return 结果
     */
    int deleteMyTips(Long[] topicIds, Long userId);
}